1. Field of the Invention
The present invention is related generally to a data processing system and in particular to a method and apparatus for processing data. Still more particularly, the present invention relates to a method, apparatus, and computer instructions for maximizing application availability while automatically deploying enterprise applications or updates in complex data processing environments.
2. Description of the Related Art
Modern data processing environments can be extremely complex. A data processing environment may have a vast number of data processing systems connected to each other in a web of physical groupings known as nodes and logical groupings known as clusters. A node is a control mechanism for one or more servers on a machine. A cluster logically deals with multiple similar servers on different machines. Clusters can coexist with other non-cluster servers on a machine and may contain all of the same applications.
Due to the nature of the organization of inter-dependent applications throughout the set of data processing systems, affecting one data processing system in a node or cluster may affect other applications on other data processing systems in the data processing environment. If at least one copy of each application does not remain running somewhere in the data processing environment, then service may be denied and an availability failure may occur. Moreover, one running copy of every application may not be sufficient to maintain service. Multiple running copies of software may be required to achieve acceptable throughput and response service levels.
The complexity of modern data processing environments makes deploying new enterprise applications (EARs), or other applications, onto data processing systems difficult. The problem is especially complex if updated enterprise applications are deployed. If even one data processing system requires an enterprise application update to be deployed, then many other data processing systems can be affected.
Automated programs for deploying enterprise applications that are available today require voluminous code that is very expensive to design, develop, debug, and maintain. Such programs are hard-coded to particular sets of enterprise applications and particular environments. Such unique code is not transferable to other organizations, is not supportable, and is not flexible enough to adapt to new applications or new environments.